In certain low power systems, such as battery operated computers and other battery powered devices that are controlled by a digital processor, there are times during which the system is not being actively used or is not actively performing any useful work. During such times, transitioning the system to a sleep state or low power consumption state will preserve battery power while having minimal impact on system performance. Furthermore, when such systems detect that battery power is below a specified level, switching to a lower power mode of operation will delay the time at which battery power to the system is lost.
Some computers and computer controlled devices include power management software that determines when the device or system meets a predefined inactivity level, and then powers the device down partially or fully. For instance, the predefined inactivity level might be defined as no execution of application programs and receipt of no external event signals (e.g., keystrokes or mouse movement signals from a user interface, or change in the status of another device that is being monitored by the system in question) for a specified period of time (e.g., five minutes, or a user specified amount of time). The manner of powering the device down when the power management software detects the predefined inactivity level can vary greatly from system to system and component to component.
For instance, in some devices power down might be accomplished by saving the current system context in stable storage (e.g., battery backed RAM), and then totally powering down all components of the system other than RAM and the devices used to detect external event signals. Whenever an external event signal is received, the system performs a "warm boot" in which it reloads its context from stable storage and then resumes normal software execution so as to be able to process the external event signal that caused the system to be powered back on.
In other systems, power reduction is accomplished by powering off selected power hungry components, such as mechanical devices, and inhibiting the delivery of clock signals to other devices.
In yet other systems, especially systems where fast response to external signals is deemed to be especially important, power usage is reduced without fully powering the devices most likely to be needed for responding to the external signals. Rather, the rate of the clock signals to some devices (e.g., CMOS devices) is reduced, for example by a specified factor such as two (or four or any other appropriate clock rate reduction factor). Reducing the rate of the clock signal delivered to a data processor (i.e., central processing unit) greatly reduces the power consumed by the processor, while still allowing the processor to continue perform background tasks that use only a small fraction of the system's data processor bandwidth. When a qualifying external event (i.e., one that requires restoring the system to full power) is detected, the power management software changes the rate of the clock signal delivered to the data processor back to its full, normal rate.
It is an object of the present invention to provide a hardware based controller for supporting software based transitioning of a system's power state, including performing wakeup transitioning from low to high power consumption states and power down transitions from a high to low power consumption states.
It is a related object of the present invention that the hardware based controller filter externally generated wakeup event signals so that the system transitions to an operational or full power state only in response to specified qualifying wakeup event signals.
It is another object of the present invention that the hardware based controller determine, based on the sleep state of the system and wakeup event signal received, whether or not transitioning the system from a sleep state to a working state requires software assistance. A further object of the present invention is that the hardware based controller invoke execution of an interrupt handler upon transitioning the system to the working state only when the system's current sleep state and/or the received wakeup event signal require a software assisted wakeup transition.